/* SybaseDelegate.h:
 * You may freely copy, distribute, and reuse the code in this example.
 * NeXT disclaims any warranty of any kind, expressed or  implied, as to its
 * fitness for any particular use.
 *
 * Written by Dan Willhite, EO Dev Team
 * Modified by Mai Nguyen
 *
 */

#import "SybaseDelegate.h"
#import "Evaluator.h"

/* A way to get a string out of an object */

@implementation SybaseDelegate
- (NSArray *)sybaseChannel:(SybaseChannel *)channel
    willFetchAttributes:(NSArray *)attributes
    forRowOfType:(SybaseRowType)rowType
    withComputeRowId:(int)computeRowId
{
	currentRowType = rowType;
	
    if (rowType == SybaseRegularRow)
	return attributes;
	
    attributes = [(EOAdaptorChannel *) channel describeResults];
    return attributes;
}

/* Return YES will return all row types: regular, compute, etc.
 * If one only wants specific rows to be returned, one can selectively
 * return YES on those row types and NO on all others.
 */
- (BOOL)sybaseChannel:(SybaseChannel *)channel
    willReturnRow:(NSDictionary *)row ofType:(SybaseRowType)rowType 
    withComputeRowId:(int)computeRowId
{
	currentRowType = rowType;
	
    switch (rowType) {
	case SybaseRegularRow:
	    break;
	case SybaseComputeRow:
		[[[NXApp mainWindow] delegate] logString:@"Returning compute row\n"];
	    break;
	case SybaseReturnParameterRow:
		[[[NXApp mainWindow] delegate] logString:
							@"Returning return parameter row\n"];
	    break;
	case SybaseReturnStatusRow:
		[[[NXApp mainWindow] delegate] logString:
							@"Returning return status row\n"];
	    break;
    }
    
    return YES;
}

- (SybaseRowType) currentRowType
{
	return currentRowType;
}

- (void)adaptorChannelDidChangeResultSet:channel
{
    // Invoked from -fetchAttributes:withZone: to tell the delegate that
    // fetching will start for the next result set, when a select operation
    // resulted in multiple result sets.  This method is invoked just after a
    // -fetchAttributes:withZone: returns nil when there are still result sets
    // left to fetch.

	[[[NXApp mainWindow] delegate] announce:channel selector:_cmd];
}



- (void)adaptorChannel:channel
    didEvaluateExpression:(NSString *)expression
{
    // Invoked from -evaluateExpression: to tell the delegate that a query
    // language expression has been evaluated by the database server. The
    // delegate may take whatever action it needs based on this information.

	[[[NXApp mainWindow] delegate] announce:channel 
		selector:_cmd 
		with:[NSArray arrayWithObject:expression]];
}



@end

